package Thread.Thread_Attributes;

public class Demo13 {
    public static void main(String[] args) throws InterruptedException {
        //下列的lambda的代码在编译器眼中，是出现在 Thread t的上方的
        //所以此时的t还是没有被定义的
        //在下面while循环的控制语句部分不能直接使用t这个变量
        //设置一个临时变量来控制

        Thread t=new Thread(()->{
           //先获取到线程的引用
            Thread currentThread=Thread.currentThread();
            while(!currentThread.isInterrupted()){
                System.out.println("hello thread");
                //sleep被唤醒之后会抛出异常，自动清空标志位
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    //1.无视A 继续执行当前线程的操作 在catch语句中什么都不做
                    //2.立即结束当前线程 写上break/return
                    //3.想稍后在结束当前线程，可以在catch中加上一些其他的逻辑
                    // （比如 释放资源，清理一些数据，提交一些结果.....收尾工作），在这些工作执行完成之后加上一个break/return语句

                    System.out.println("执行到catch操作");
                    break;
                }
            }
        });
        t.start();
        Thread.sleep(3000);
        //在主线程中，控制t线程被终止，设置上述标志位

        t.interrupt();
    }
}
